<?php
namespace Controllers;

require_once('\Views\PageView.php');
require_once('\Views\LoginView.php');
require_once('\Views\ViewAlbumsView.php');
require_once('\Controllers\LoginController.php');
require_once('\Models\LoginModel.php');
require_once('\Models\Database.php');
require_once('\Models\AlbumCatalog.php');
require_once('\Models\UserCatalog.php');

class ViewAlbumsController
{
	public function createControl()
	{
		$db = new \Models\Database();
		$pv = new \Views\PageView();
		$lm = new \Models\LoginModel();
		$vav= new \Views\ViewAlbumsView();
		$ac	= new \Models\AlbumCatalog();
		$uc	= new \Models\UserCatalog();
		$lc = new \Controllers\LoginController();
		
		$html = $lc->createControl($db, new \Views\LoginView());
			
		// Databasuppkopplingsfel om false
		if(!$html)
		{
			$html .= $pv->setStatusText(\Common\Strings::DB_CONNECTION_ERROR, false);
			return $pv->generateHTMLPage(\Common\Strings::TITLE_VIEW_ALBUM, $html);
		}
		
		if($lm->IsLoggedIn())
		{
			$html .= $pv->getMenu();
			
			$html .= $pv->encapsulateString("h1", \Common\Strings::HEADER_VIEW_ALBUM);
			
			// Hämta alla användare
			$users = $uc->getUsers($db);
			
			// Hämtar id och år från formuläret
			$userId = $vav->getUserId();
			$albumYear = $vav->getAlbumYear();
			
			// Spara värdet så select inte nollställs
			$selectedYear = $selectedUserId = "";
			
			// Om användare eller år har angivits
			if($userId != false || $albumYear != false)
			{
				// Specifikt år och specifik användare
				if($albumYear != false && $userId != false)
				{
					$albums = $ac->getAlbums($db, $userId, $albumYear);
					$selectedYear = $albumYear;
					$selectedUserId = $userId;
				}
				// Specifikt år
				else if($albumYear != false && $userId == false)
				{
					$albums = $ac->getAlbums($db, "", $albumYear);
					$selectedYear = $albumYear;
				}
				// Specifik användare
				else if($albumYear == false && $userId != false)
				{
					$albums = $ac->getAlbums($db, $userId, "");
					$selectedUserId = $userId;
				}
			}
			// Hämta alla album
			else
				$albums = $ac->getAlbums($db);
			
			// Formulär för avgränsa album
			$html .= $vav->albumCategoriesForm($users, $selectedUserId, $selectedYear);
			
			// Visa album
			$albumsHtml = $vav->viewAlbums($albums);
			
			if($albumsHtml == "")
				$html .= $pv->encapsulateString("p", \Common\Strings::DB_ALBUMS_MISSING);
			else
				$html .= $albumsHtml;
		}
		
		$db->Close();
		
		return $pv->generateHTMLPage(\Common\Strings::TITLE_VIEW_ALBUM, $html);
	}
}
?>